
package View;

import java.util.Scanner;
import DAO.ClienteDAO;
import Pojo.Cliente;
import java.util.ArrayList;

/**Classe que serve como menu para controle dos Clientes
 * 
 * @author Vitor
 */
public class MenuCliente {
   
    /**Método que serve para o cadastro de um novo Cliente
     * 
     * @param clienteDao ClienteDAO - Lista de Clientes
     * @return Cliente - Contem informações do Cliente
     */
    public Cliente CadastroCliente(ClienteDAO clienteDao){
         Scanner scanner = new Scanner(System.in);
         int cpfOk;
         cpfOk=1;
         Cliente novo = new Cliente();
         System.out.println();
         System.out.println("Entre com o nome do Cliente:");
         novo.setNome(scanner.nextLine());
         do{//verifica se o cpf ja foi cadastrado
             if(cpfOk>1){
               System.out.println("Cpf Invalido! Tente novamente");
             }
             System.out.println("Entre com o Cpf do Cliente:");
             novo.setCpf(scanner.nextLine());
             cpfOk=cpfOk+1;
                      
         }while(clienteDao.buscaCpf(novo.getCpf())!=null);
         System.out.println("Entre com o Endereco do Cliente:");             
         novo.setEndereco(scanner.nextLine());
         clienteDao.adicionar(novo);
         return novo;     
    }
    
    /**Método que imprime informações de um Cliente
     * 
     * @param cliente Cliente - Classe que contem informações do Cliente
     */
    public void ImprimirCliente(Cliente cliente){
        System.out.println();
        System.out.println("Nome = "+cliente.getNome());
        System.out.println("Cpf = "+cliente.getCpf());
        System.out.println("Endereco = "+cliente.getEndereco());
        System.out.println();
        
    }
    
    /**Método que imprime o Menu
     * 
     */
    private void imprimeMenu(){
        System.out.println("-------Escolha uma opcao-----");
        System.out.println("(1)Cadastrar Cliente");
        System.out.println("(2)Excluir Cliente");
        System.out.println("(3)Listar todos Clientes");
        System.out.println("(4)Buscar Cliente");
        System.out.println("(5)Voltar para o menu principal");
        System.out.println("Entre com uma opcao: ");
    }
    
    /**Método que faz o uso dos métodos dessa classe para controle dos clientes
     * 
     * @param clienteDao ClienteDAO - Lista de Clientes
     */
    public void menuOpcao(ClienteDAO clienteDao){
        Scanner scanner = new Scanner(System.in);
        Scanner scanner2 = new Scanner(System.in);
        byte opcao,i;
        ArrayList<Cliente> lista;
        String nome;
        Cliente aux;

        do{
            imprimeMenu();
            opcao = Byte.parseByte(scanner.nextLine());
            switch(opcao){
                case 1://destinado ao cadastro de cliente
                    int cpfOk;
                    cpfOk=1;
                    Cliente novo = new Cliente();
                    System.out.println();
                    System.out.println("Entre com o nome do Cliente:");
                    novo.setNome(scanner.nextLine());
                    do{//verifica se o cpf ja foi cadastrado
                        if(cpfOk>1){
                            System.out.println("Cpf Invalido! Tente novamente");
                        }
                        System.out.println("Entre com o Cpf do Cliente:");
                        novo.setCpf(scanner.nextLine());
                        cpfOk=cpfOk+1;
                      
                    }while(clienteDao.buscaCpf(novo.getCpf())!=null);
                    System.out.println("Entre com o Endereco do Cliente:");             
                    novo.setEndereco(scanner.nextLine());
                    clienteDao.adicionar(novo);
                    
                    break;
                case 2://destinado a exclusao de um cliente
                    
                    System.out.println("Digite o nome do Cliente a ser excluido:");
                    if(clienteDao.excluirCliente(scanner.nextLine())){
                        System.out.println("Cliente exclu�do com sucesso");
                    }else{
                        System.out.println("Cliente n�o encontrado");
                 
                    }
                 
                    break;
                case 3://destinado a listar todos os clientes cadastrados

                    lista=clienteDao.getListaClientes();
                    System.out.println();
                    for(Cliente cliente : lista){
                        ImprimirCliente(cliente);
                    }
                    System.out.println();
                    
                    break;
                case 4://destinado a imprimir todos os clientes cadastrados
                    System.out.println("Digite o nome do cliente a ser procurado:");
                    aux=clienteDao.buscaCliente(scanner.nextLine());
                    if(aux== null){
                        System.out.println("Cliente nao encontrado");
                    }else {
                        ImprimirCliente(aux);
                    }
                    
                    break;
                case 5://sair do menu cliente
                    clienteDao.escreverArquivo();
                    break;
                default:
                    System.out.println("Opcao invalida!!");
            }
        }while(opcao!=5);
    }
}

